home *** CD-ROM | disk | FTP | other *** search
- #include <PalmOS.h>
- #include <PalmCompatibility.h>
-
- #define Form1004 1004
- #define Button1005 1005
- #define TEXTMODE 0
- #define BITMAPMODE 1
- static int StartApplication(void);
- static void EventLoop(void);
- static void StopApplication(void);
- static Boolean frmMainEventH(EventPtr event);
- static int clipMode=-1;
- //---------------------------------------------------------------------------
- DWord PilotMain (Word cmd, Ptr cmdPBP, Word launchFlags)
- {
- int error;
-
- if (cmd == sysAppLaunchCmdNormalLaunch)
- {
- error = StartApplication(); // Application start code
- if (error)
- return error;
- EventLoop(); // Event loop
- StopApplication (); // Application stop code
- }
- return 0;
- }
-
- //---------------------------------------------------------------------------
- static int StartApplication(void)
- {
- FrmGotoForm(Form1004);
- }
-
- //---------------------------------------------------------------------------
- static void EventLoop(void)
- {
- short err;
- int formID;
- FormPtr form;
- EventType event;
-
- do
- {
- EvtGetEvent(&event, 200);
- if (SysHandleEvent(&event))
- continue;
- if (MenuHandleEvent((void *)0, &event, &err))
- continue;
- if (event.eType == frmLoadEvent)
- {
- formID = event.data.frmLoad.formID;
- form = FrmInitForm(formID);
- FrmSetActiveForm(form);
- switch (formID)
- {
- case Form1004:
- FrmSetEventHandler(form, (FormEventHandlerPtr) frmMainEventH);
- SwitchClipMode(TEXTMODE);
- break;
- }
- }
- FrmDispatchEvent(&event);
- }
- while(event.eType != appStopEvent);
- }
-
- //---------------------------------------------------------------------------
- static void StopApplication(void)
- {
- //Insert stop code here
- FrmCloseAllForms();
- }
-
- //---------------------------------------------------------------------------
- static Boolean frmMainEventH(EventPtr event)
- {
- FormPtr form;
- int handled = 0;
-
- switch (event->eType)
- {
- case frmOpenEvent:
- form = FrmGetActiveForm();
- FrmDrawForm(form);
- handled = 1;
- break;
- case popSelectEvent:
- SwitchClipMode(event->data.popSelect.selection);
- break;
- case ctlSelectEvent:
- if (event->data.ctlEnter.controlID == 1016 ) {
- FieldType *fptr=0;
- form=FrmGetActiveForm();
- fptr=FrmGetObjectPtr(form,FrmGetObjectIndex(form,1012));
- ClipboardAddItem(clipboardText,FldGetTextPtr(fptr),FldGetTextLength(fptr)-1);
- handled = 1;
- }
- else
- if (event->data.ctlEnter.controlID == 1005 ) {
- FieldType *fptr=0;
- ClipboardAddItem(clipboardText,"\0",1);
- form = FrmGetActiveForm();
- fptr=FrmGetObjectPtr(form,FrmGetObjectIndex(form,1012));
- FldDelete(fptr,0,FldGetTextLength(fptr));
- handled = 1;
- }
- else
- if (event->data.ctlEnter.controlID == 1031 ) {
- }
- break;
- case nilEvent:
- handled = 1;
- break;
- }
- return handled;
- }
-
- int SwitchClipMode(int newMode) {
- if(newMode==clipMode)
- return 0;
- clipMode=newMode;
- switch(clipMode) {
- case TEXTMODE: {
- UInt16 len=0;
- MemHandle mh=0;
- FieldType *fptr=0;
- FormPtr form=FrmGetActiveForm();
- fptr=FrmGetObjectPtr(form,FrmGetObjectIndex(form,1012));
- FldSetUsable(fptr,1);
- mh=ClipboardGetItem(clipboardText,&len);
- if(len) {
- FldDelete(fptr,0,FldGetTextLength(fptr));
- FldPaste(fptr);
- }
- break;
- }
- case BITMAPMODE: {
- DmOpenRef or=0;
- MemHandle mh=0;
- MemPtr mp=0;
- LocalID id;
- FormPtr form=FrmGetActiveForm();
- FieldType *fptr=FrmGetObjectPtr(form,FrmGetObjectIndex(form,1012));
- id=DmFindDatabase(0,"ClipSyncDB");
- or=DmOpenDatabase(0,id,dmModeReadOnly);
- mh=DmGetRecord(or,0);
- mp=MemHandleLock(mh);
- ClipboardAddItem(clipboardText,mp,StrLen(mp));
- DmCloseDatabase(or);
- SwitchClipMode(TEXTMODE);
- break;
- }
- }
- return 0;
- }